package teste.cliente;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.jmock.integration.junit4.JUnit4Mockery;
import org.junit.Test;
import org.junit.runner.RunWith;

import comum.rn.RNInfoSalaJogo;
import comum.so.exception.SalaComNomeJaExistenteException;

import cliente.iu.JFrameSingleton;
import cliente.so.SOClienteEntradaImpl;
import cliente.so.SOClienteSaida;

@RunWith(JMock.class)
public class SOClienteEntradaImplTestWithMock {
	
final Mockery mockery = new JUnit4Mockery();
	
	@Test
	public void criarSalaJogo() throws RemoteException, SalaComNomeJaExistenteException{
		final SOClienteSaida clienteSaida = mockery.mock(SOClienteSaida.class);
		final String nome = "manga";
		final String senha = "manga";
		final List<String> lista = new ArrayList<String>();
		final Integer[] posicaoMesa = new Integer[4];
		final RNInfoSalaJogo infoSalaJogo = new RNInfoSalaJogo(1l,lista, posicaoMesa, nome);
		lista.add(nome);
		
		
		mockery.checking(new Expectations(){{
			one(clienteSaida).criarSalaJogo(nome, senha);
			will(returnValue(infoSalaJogo));
			one(clienteSaida).iniciarSalaJogo(infoSalaJogo, JFrameSingleton.getSingleton());
		}});
		 SOClienteEntradaImpl clienteEntrada = new SOClienteEntradaImpl(clienteSaida);
		 clienteEntrada.criarSalaJogo(nome, senha);
	}

}
